---
title: "Rust 初识与环境搭建"
description: "从 JavaScript 开发者视角认识 Rust，了解 Rust 能做什么，以及如何搭建开发环境"
---

# Rust 初识与环境搭建

## 🎯 学习目标

通过本模块，你将：
- 了解 Rust 能做什么，以及它与 JavaScript 的交集
- 掌握从 JavaScript 到 Rust 的语言迁移学习法
- 学会安装和配置 Rust 开发环境
- 创建并运行你的第一个 Rust 项目

---

## 🤔 为什么学习 Rust？

### 作为 JavaScript 开发者，你可能会问：

- **我已经会 JavaScript 了，为什么还要学 Rust？**
- **Rust 能帮我解决什么问题？**
- **学习 Rust 对我的职业发展有什么帮助？**

### Rust 能为你带来什么？

1. **性能提升** - Rust 程序运行速度接近 C/C++，比 JavaScript 快 10-100 倍
2. **内存安全** - 编译时检查，避免内存泄漏和空指针错误
3. **并发安全** - 编译时保证多线程安全，避免竞态条件
4. **系统编程** - 可以编写操作系统、驱动程序、嵌入式程序
5. **WebAssembly** - 在浏览器中运行高性能代码
6. **职业发展** - 掌握系统级编程语言，拓宽技术栈

### JavaScript 与 Rust 的互补关系

| 场景 | JavaScript 优势 | Rust 优势 |
|------|----------------|-----------|
| Web 前端 | ✅ 生态系统成熟 | ✅ WebAssembly 高性能 |
| Web 后端 | ✅ 开发效率高 | ✅ 性能和安全 |
| 桌面应用 | ✅ 跨平台简单 | ✅ 原生性能 |
| 移动应用 | ✅ 快速原型 | ✅ 原生性能 |
| 系统编程 | ❌ 不适合 | ✅ 主要优势 |
| 游戏开发 | ✅ 有限 | ✅ 高性能 |

---

## 🧠 从 JS 到 Rust 的学习策略

### 学习心态调整

学习 Rust 时，需要调整一些思维习惯：

**JavaScript 思维：**
- 关注"做什么" - 直接写业务逻辑
- 运行时检查 - 错误在运行时发现
- 自动内存管理 - 不用关心内存分配

**Rust 思维：**
- 关注"如何做" - 需要明确指定类型和内存管理
- 编译时检查 - 错误在编译时发现
- 显式内存管理 - 通过所有权系统管理内存

### 学习策略

1. **对比学习** - 每个 Rust 概念都对应 JavaScript 概念
2. **渐进式** - 从简单语法到复杂概念
3. **实践驱动** - 每个概念都要动手验证
4. **项目导向** - 通过实际项目巩固知识

---

## 🛠️ 安装 Rust 开发环境

### 1. 安装 Rust

Rust 使用 `rustup` 作为版本管理工具，类似于 Node.js 的 `nvm`：

```bash
# 安装 Rust（类似 nvm install node）
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 或者使用 Homebrew（macOS）
brew install rust

# 验证安装
rustc --version
cargo --version
```

### 2. 配置 IDE

推荐使用 VS Code，安装以下插件：

- **rust-analyzer** - Rust 官方推荐的代码分析工具
- **Even Better TOML** - 配置文件语法高亮
- **crates** - 依赖管理
- **Error Lens** - 错误提示增强
- **CodeLLDB** - 调试支持

### 3. 配置 Cargo

Cargo 是 Rust 的包管理器和构建工具，类似于 npm：

```bash
# 查看 Cargo 配置
cargo --version

# 配置镜像源（国内用户）
# 在 ~/.cargo/config.toml 中添加：
[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
```

---

## 🚀 Hello, Rust：第一个项目

### 创建新项目

```bash
# 创建新项目（类似 npm init）
cargo new hello-rust
cd hello-rust

# 项目结构
hello-rust/
├── Cargo.toml    # 项目配置（类似 package.json）
└── src/
    └── main.rs   # 入口文件（类似 index.js）
```

### 项目配置文件对比

```json
// package.json (JavaScript)
{
  "name": "hello-js",
  "version": "1.0.0",
  "description": "Hello JavaScript project",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },
  "dependencies": {
    "express": "^4.18.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.0"
  }
}
```

```toml
# Cargo.toml (Rust)
[package]
name = "hello-rust"
version = "0.1.0"
edition = "2021"
description = "Hello Rust project"

[dependencies]
# 生产依赖
serde = "1.0"
tokio = { version = "1.0", features = ["full"] }

[dev-dependencies]
# 开发依赖
criterion = "0.5"
```

### 第一个 Rust 程序

<UniversalEditor title="Hello World 对比" compare={true}>
```javascript !! js
// index.js
console.log("Hello, JavaScript!");

// 变量声明
let name = "LangShift";
console.log(`Hello, ${name}!`);

// 函数定义
function greet(name) {
    return `Hello, ${name}!`;
}

console.log(greet("Developer"));
```

```rust !! rs
// src/main.rs
fn main() {
    println!("Hello, Rust!");
    
    // 变量声明（不可变）
    let name = "LangShift";
    println!("Hello, {}!", name);
    
    // 函数定义
    fn greet(name: &str) -> String {
        format!("Hello, {}!", name)
    }
    
    println!("{}", greet("Developer"));
}
```
</UniversalEditor>

### 运行项目

```bash
# 运行项目（类似 npm start）
cargo run

# 构建项目（类似 npm run build）
cargo build

# 构建发布版本（优化后的二进制文件）
cargo build --release

# 运行测试（类似 npm test）
cargo test

# 检查代码（类似 npm run lint）
cargo clippy

# 格式化代码（类似 npm run format）
cargo fmt
```

---

## 🔍 理解 Rust 项目结构

### 标准项目结构

```
my-rust-project/
├── Cargo.toml          # 项目配置和依赖
├── Cargo.lock          # 依赖锁定文件（类似 package-lock.json）
├── src/
│   ├── main.rs         # 二进制程序入口
│   ├── lib.rs          # 库入口（可选）
│   └── bin/            # 多个二进制文件
│       └── tool.rs
├── tests/              # 集成测试
│   └── integration_test.rs
├── examples/           # 示例代码
│   └── basic.rs
├── benches/            # 性能基准测试
│   └── benchmark.rs
└── target/             # 构建输出目录
    ├── debug/          # 调试版本
    └── release/        # 发布版本
```

### 与 JavaScript 项目结构对比

```javascript
// JavaScript 项目结构
my-js-project/
├── package.json        # 项目配置
├── package-lock.json   # 依赖锁定
├── index.js           # 入口文件
├── src/               # 源代码
│   ├── utils.js
│   └── components/
├── tests/             # 测试文件
│   └── utils.test.js
├── examples/          # 示例代码
└── dist/              # 构建输出
```

```rust
// Rust 项目结构
my-rust-project/
├── Cargo.toml         # 项目配置
├── Cargo.lock         # 依赖锁定
├── src/
│   ├── main.rs        # 入口文件
│   ├── lib.rs         # 库入口
│   └── utils.rs       # 工具模块
├── tests/             # 测试文件
│   └── integration_test.rs
├── examples/          # 示例代码
└── target/            # 构建输出
```

---

## 🎯 实践练习

### 练习 1：创建你的第一个 Rust 项目

1. 创建一个名为 `my-first-rust` 的项目
2. 修改 `main.rs`，输出你的名字和编程语言偏好
3. 运行项目并观察输出

<UniversalEditor title="练习 1 参考答案" compare={true}>
```javascript !! js
// JavaScript 版本
console.log("我的名字是: 张三");
console.log("我喜欢的编程语言: JavaScript");
console.log("我正在学习: Rust");
```

```rust !! rs
// Rust 版本
fn main() {
    println!("我的名字是: 张三");
    println!("我喜欢的编程语言: JavaScript");
    println!("我正在学习: Rust");
}
```
</UniversalEditor>

### 练习 2：理解变量声明

<UniversalEditor title="练习 2：变量声明对比" compare={true}>
```javascript !! js
// JavaScript: 变量可以重新赋值
let name = "JavaScript";
name = "JS"; // 可以重新赋值
console.log(name);

const age = 25;
// age = 26; // 错误：const 不能重新赋值
```

```rust !! rs
fn main() {
  // Rust: 变量默认不可变
  let name = "Rust";
  // name = "R"; // 错误：变量默认不可变
  println!("{}", name);

  // 使用 mut 关键字声明可变变量
  let mut age = 25;
  age = 26; // 可以重新赋值
  println!("{}", age);
}
```
</UniversalEditor>

---

## 📚 下一步学习

现在你已经完成了 Rust 的初识和环境搭建！接下来你将学习：

1. **核心语法与结构对比** - 深入理解 Rust 的语法特性
2. **所有权与内存模型** - Rust 的核心概念
3. **模块系统与构建工具** - 项目组织和依赖管理
4. **并发与异步模型** - 现代编程的核心技能

### 学习建议

1. **多动手实践** - 每个概念都要在编辑器中验证
2. **对比思维** - 始终从 JavaScript 视角理解 Rust
3. **关注所有权** - 这是 Rust 的核心概念
4. **阅读错误信息** - Rust 的编译器错误信息非常详细

---

## 🔗 相关资源

- [Rust 官方文档](https://doc.rust-lang.org/)
- [Rust Book](https://doc.rust-lang.org/book/)
- [Rust by Example](https://doc.rust-lang.org/rust-by-example/)
- [Rust Playground](https://play.rust-lang.org/)
- [Crates.io](https://crates.io/) - Rust 包仓库

---

**恭喜你迈出了学习 Rust 的第一步！** 🦀

在下一模块中，我们将深入探讨 Rust 的核心语法特性，并学习如何将它们与 JavaScript 的概念进行对比。 